package cn.com.surker.production.entity;

import cn.com.surker.base.BaseEntity;
import cn.com.surker.excel.ExcelCell;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 生产计划表
 * </p>
 *
 * @author admin
 * @since 2024-07-25
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class ProductionIndent extends BaseEntity implements Serializable {

	private static final long serialVersionUID = 1L;

	public ProductionIndent() {
	}

	/**
	 * 标识
	 */
	@TableId(value = "id", type = IdType.AUTO)
	private Long id;

	/**
	 * 公司ID
	 */
	private Long orgId;

	/**
	 * 编码
	 */
	@ExcelCell(value = "任务单编号", sort = 1)
	private String code;

	/**
	 * 合同id
	 */
	private Long conId;

	/**
	 * 施工部位
	 */
	@ExcelCell(value = "施工部位", sort = 3)
	private String site;

	/**
	 * 砼强度,关联sys_strength表
	 */
	private Long strengthId;

	/**
	 * 特性要求,多个用逗号分开
	 */
	private String techId;

	@ExcelCell(value = "特性要求", sort = 5)
	private String tech;

	/**
	 * 塌落度
	 */
	private String slumps;

	/**
	 * 运距
	 */
	@ExcelCell(value = "运距", sort = 6)
	private Double distance;

	/**
	 * 工地地址
	 */
	private String address;

	/**
	 * 浇筑方式
	 */
	private Long castModeId;


	/**
	 * 泵送设备
	 * 字段没有用,根据production_indent_pump关联
	 */
	@Deprecated
	private Long pumpDeviceId;


	/**
	 * 泵送类型
	 */
	private Long pumpTypeId;


	/**
	 * 泵送规格
	 */
	private Long pumpNormId;

	/**
	 * 工地联系人
	 */
	private String linkMan;

	/**
	 * 工地联系方式
	 */
	private String linkPhone;

	/**
	 * 道路运输类型,枚举RoadTypeEnum
	 */
	private Integer roadType;

	/**
	 * 是否经过超限站,枚举OverLimitEnum
	 */
	private Integer overLimit;

	/**
	 * 计划方量
	 */
	private Double planStere;

	/**
	 * 是否开盘
	 */
	private Integer isPro;

	/**
	 * 任务单状态(0:待供;1:正供;2:供毕),使用枚举类:ProTypeEnum
	 */
	private Integer type;

	/**
	 * 是否上传配合比,(0:未上传;1已经上传)使用枚举:UploadExpendEnum
	 */
	private Integer uploadExpend;

	/**
	 * 资料情况
	 */
	private Integer dataType;

	/**
	 * 追加方量
	 */
	private Double addStere;

	/**
	 * 创建类型,0:自建;1:微信
	 */
	private Integer createType;

	/**
	 * 工地要求开盘时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
	private Date builderStartTime;

	/**
	 * 调度计划开盘时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
	private Date dispatchStartTime;

	/**
	 * 实际开盘时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
	@ExcelCell(value = "开盘日期", sort = 0, defaultStrValue = "未开盘")
	private Date actualStartTime;

	/**
	 * 供毕时间
	 */
	private Date endTime;

	/**
	 * 是否计算补贴,0为计算,1为不计算
	 */
	private Integer subsidy;

	/**
	 * 任务单存在的补贴类型,用","分割;根据该补贴类型,取出合同的补贴计算方式
	 */
	private String subsidyType;

	/**
	 * 批次id,默认为null,当多个任务单合并成一个批次时,取用id最小值的任务单id
	 */
	private Long batchId;

	/**
	 * erpid
	 */
	private Long erpId;

	/**
	 * 审核状态
	 */
	private Integer examineStatus;

	/**
	 * 审核人
	 */
	private Long examineUserId;

	/**
	 * 审核人名
	 */
	private String examineUserName;

	/**
	 * 审核记录表
	 */
	private String bizType;

	/**
	 * 审核id
	 */
	private Long bizId;

	/**
	 * 前场工长
	 */
	private String foreman;

	/**
	 * 初始化任务单编号
	 */
	public void initCode(String orgCode) {
		String prefix = "R" + orgCode;
		String invCode = super.baseInitCode(prefix);
		this.code = invCode;
	}

}
